package com.xiangge.homework;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @author xiangge
 * @date 2025年3月14日
 * @version 1.0
 * @description 超市会员管理系统首页
 */
public class MarketSystem {
    public static final Scanner INPUT = new Scanner(System.in);
    public static final String[][] ARR = new String[10][5];



    public static void main(String[] args) {
        // 调用初始化用户信息的方法
        initUsers();

        outer:
        while (true) {
            System.out.println("=============================欢迎使用超市会员管理系统===========================");
            System.out.println("1.查询会员信息");
            System.out.println("2.删除会员信息");
            System.out.println("3.新增会员信息");
            System.out.println("4.退出系统");
            System.out.println("==============================================================================");
            System.out.print("请录入您的选择：");
            int choice = INPUT.nextInt();
            System.out.println();
            // 判断
            switch(choice){
                case 1:
                    // 查询会员信息
                    findUserS();
                    break;
                case 2:
                    // 删除会员信息
                    deleteUser();
                    break;
                case 3:
                    // TODO 新增会员信息
                    break;
                default:
                    System.exit(0);
                    break;
            }
        }
    }

    // 定义方法根据id查询是否存在该会员
    public static boolean isFlag(String id){
        if(id == null){
            System.err.println("要删除的id不能为null!");
            return false;
        }

        // 1. 查找二维数组ARR中是否存在小数组的0号索引位置的元素和 id相同
        // 假设没有
        boolean flag = false;

        for (String[] eleArr : ARR) {
            if(id.equals(eleArr[0])){
                flag = true;
                break;
            }
        }
        return flag;
    }

    // 定义方法：查找ARRZ中 小数组的0号位置为： id 的小数组索引   已经确定存在
    public static void findIndexAndDelete(String id){
        // 假设不存在
        int index = -1;
        // 遍历数组
        for (int i = 0; i < ARR.length; i++) {
            String[] eleArr = ARR[i];
            if (id.equals(eleArr[0])) {
                index = i;
            }
        }
        // 小数组的位置： index
        // 将index后面的元素整体向前平移一个位置
        for (int i = index+1; i < ARR.length; i++) {
            ARR[i-1] = ARR[i];
        }
        // 将最后一个小数组中所有的元素赋值为null
        String[] eleArrLast = ARR[ARR.length - 1];
        Arrays.fill(eleArrLast,null);

    }


    // 定义方法：根据id删除会员信息
    public static void deleteUser(){
        System.out.println("请输入要删除的会员ID号：");
        String id = INPUT.next();
        // 调用方法判断id是否在ARR的用户信息小数组中存在
        if (isFlag(id)) { // id在数组中存在
            System.out.println("您确定要删除吗？");
            String choice = INPUT.next();
            if("y".equals(choice)){
                // 找到 ARR中小数组的0号位置为 id的元素的索引
                findIndexAndDelete(id);
                System.out.println("删除成功！");
            }
        }
        else{ // id在数组中不存在
            System.out.println("对不起，您要删除的会员ID不存在,请核实后再删除！");
        }

        // 删除完毕重新查看
        findUserS();

    }



    // 定义方法：向数组ARR中存入三条用户的初始化信息
    public static void initUsers(){
        // 1. 准备三个小数组
        String[] eleArr1 = {"1001","冯程程","铂金卡","2000","合法账户"};
        String[] eleArr2 = {"1002","孙悟空","钻石卡","5000","被禁账户"};
        String[] eleArr3 = {"1003","张巧巧","黄金卡","500 ","合法账户"};

        // 2. 将三个数组作为元素存入二维数组ARR中
        ARR[0] = eleArr1;
        ARR[1] = eleArr2;
        ARR[2] = eleArr3;
    }



    // 定义方法： 查询会员信息
    public static void findUserS(){
        System.out.println("用户ID\t账号名\t卡类型\t积分数量\t卡片状态");
        // 遍历数组打印表内容
        for (String[] eleArr : ARR) {
            if (eleArr[0] != null) {
                System.out.println(eleArr[0] + "\t" + eleArr[1] + "\t" + eleArr[2] + "\t" + eleArr[3] + "\t" + eleArr[4]);
            }
        }

        System.out.println();
    }
}
